package tec;

public abstract class TestPassagerAbstrait{
    abstract void testChoixPlaceMontee();
    abstract void testChoixChangerPlace();
    abstract protected PassagerAbstrait creerPassager(String nom, int destination,Comportement c);
    abstract void lance();

    protected void testConstructeur(){
	String nom="toto";
	int dest = 10;
	Comportement c = FabriqueComportement.faireCalme();
	PassagerAbstrait p = creerPassager(nom, dest,c);
	assert !p.estAssis() :"est  assis";
	assert !p.estDebout() : "est debout";
	assert p.estDehors() :"est dehors";
    }
    
    protected void testAccepterPlaceAssise(){
	
	Comportement c = FabriqueComportement.faireCalme();
	PassagerAbstrait p = creerPassager("toto",10,c);
	p.accepterPlaceAssise();
	assert p.estAssis() :"est  assis";
	assert !p.estDebout() : "est debout";
	assert !p.estDehors() :"est dehors";
    }
    
    protected void testAccepterPlaceDebout(){
	Comportement c = FabriqueComportement.faireCalme();
	
	PassagerAbstrait p = creerPassager("toto",10,c);
	p.accepterPlaceDebout();
	assert !p.estAssis() :"est  assis";
	assert p.estDebout() : "est debout";
	assert !p.estDehors() :"est dehors";
    }
    protected void testAccepterSortie(){
	Comportement c = FabriqueComportement.faireCalme();
	
	PassagerAbstrait p = creerPassager("toto",10,c);
	p.accepterSortie();
	assert !p.estAssis() :"est  assis";
	assert !p.estDebout() : "est debout";
	assert p.estDehors() :"est dehors";
    }
    
    protected void testNom(){
	
	Comportement c = FabriqueComportement.faireCalme();
	PassagerAbstrait p = creerPassager("toto",2,c);
	assert p.nom()=="toto";
    }
    
    protected void testNouvelArret(){
	Comportement c = FabriqueComportement.faireCalme();
	
	Transport  t1 =  FabriqueBus.faireBus(50,50);
	PassagerAbstrait p = creerPassager("toto",2,c);
	p.monterDans(t1);
	t1.allerArretSuivant();
	t1.allerArretSuivant();
	assert p.estDehors():"dehors";
    }
    
    protected void testMonterDans(){

	Comportement c = FabriqueComportement.faireCalme();
	Transport t2 = FabriqueBus.faireBus(50,50);
	PassagerAbstrait p = creerPassager("toto",10,c);
	p.monterDans(t2);
	assert (p.estAssis()&&!p.estDebout())||(p.estDebout()&&!p.estAssis());
	}
    
    
    protected void  lanceTestCommun(){
	
	
	System.out.print("Test du constructeur calme\n");
	testConstructeur();
	System.out.print("--->OK\n");


	System.out.print("Test de accepterPlaceAssise()\n");
	testAccepterPlaceAssise();
	System.out.print("--->OK\n");

	System.out.print("Test de accepterPlaceDebout()\n");
	testAccepterPlaceDebout();
	System.out.print("--->OK\n");

	System.out.print("Test de accepterSortie()\n");
	testAccepterSortie();
	System.out.print("--->OK\n");
    
	System.out.print("Test de nom()\n");
	testNom();
	System.out.print("--->OK\n");

	System.out.print("Test de monterDans()\n");
	testMonterDans();
	System.out.print("--->OK\n");

	System.out.print("Test de nouvelArret()\n");
	testNouvelArret();
	System.out.print("--->OK\n");
	
	lance();
    }


}
